package org.boticelli.auth;

import org.boticelli.Bot;
import org.boticelli.plugin.dist.ResponseMode;

/**
 * Interface for user specific actions that can only be executed by a authenticated user.
 * 
 * @author shelmberger
 *
 */
public interface UserAction
{
    /**
     * Action description. Must be in the infinitive form and is used to create error messages 
     * (e.g. "make tea" => "You are not allowed to make tea"). 
     * @return
     */
    String getDescription();

    /**
     * Returns the response mode for this action.
     * @return
     */
    ResponseMode getResponseMode();

    /**
     * Execute the action.
     * @param bot       bot
     * @param nick      nick
     */
    void execute(Bot bot, String nick);
}
